import json
import os

class ConfigLoader:
    def __init__(self, config_file):
        """
        初始化配置加载器
        :param config_file: 配置文件路径
        """
        self.config_file = config_file
        self.config = self._load_config()

    def _load_config(self):
        """
        加载配置文件
        :return: 配置字典
        """
        if not os.path.exists(self.config_file):
            raise FileNotFoundError(f"配置文件 {self.config_file} 不存在")

        with open(self.config_file, "r", encoding="utf-8") as f:
            return json.load(f)

    def get(self, key, default=None):
        """
        获取配置项
        :param key: 配置项的键（支持嵌套键，用点号分隔，如 "serial_ports.windows.port1"）
        :param default: 如果键不存在，返回的默认值
        :return: 配置项的值
        """
        keys = key.split(".")
        value = self.config
        for k in keys:
            if isinstance(value, dict) and k in value:
                value = value[k]
            else:
                return default
        return value

# 加载主程序配置
app_config = ConfigLoader(os.path.join(os.path.dirname(__file__), "../../config/app_config.json"))

# 加载测试配置
test_config = ConfigLoader(os.path.join(os.path.dirname(__file__), "../../config/test_config.json"))